package com.alex.utils;

import cn.hutool.core.collection.CollUtil;

import java.util.Collection;
import java.util.Collections;
import java.util.List;

public class StringUtil {

    /**
     * 判断字符串是否为空或null
     */
    public static boolean isEmpty(CharSequence cs) {
        return org.apache.commons.lang3.StringUtils.isEmpty(cs);
    }

    public static boolean isEmpty(Collection<?> collection) {
        return collection == null || collection.size() == 0;
    }

    /**
     * 判断字符串开头是否为中文
     */
    public static boolean isChinese(String str) {
        char[] strChar = str.toCharArray();
        char a = strChar[0];
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(a);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS) {
            return true;
        }
        return false;
    }

    // 此方法是老板新版 表 nsfc_paper 的关于c1_au字段的 与标准表 basic_standard_unit_sum 进行对应使用的
    // 方法是拿着c1au字段解析出来的json 对象的 unit set对象值传入 得到一个字符串 再拿着字符串的值去标准表的的info 字段中查询 equals 等于 得到就是标准单位 且把非中国的单位过滤掉
    public static String listToUnit(List<String> unitList) {
        if (null == unitList || unitList.isEmpty()) {
            return "";
        }
        // 为了保证信息的一致性，本方法的代码不能修改。
        Collections.sort(unitList);
        String unit = CollUtil.join(unitList, "; ").toLowerCase().trim();
        String l = unitList.get(0).toLowerCase().trim();
        boolean isHosp = l.contains("hosp ") || l.contains(" hosp") || l.contains("hospital") || l.contains("医院");
        unit = unitList.size() == 2 && isHosp ? (unitList.get(1) + "; " + l).toLowerCase().trim() : unit;
        unit = unitList.size() == 3 && isHosp ? (unitList.get(1) + "; " + unitList.get(2) + "; " + l).toLowerCase().trim() : unit;
        return unit;
    }

    /**
     * 判断字符串是否为空
     */
    public static boolean isNotNull(String str) {
        if (str != null && !str.equals("") && !str.trim().equals("") && !str.trim().equals("null")&&!str.trim().equals("[]")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断字符串为空
     */
    public static boolean isNull(String str) {
        if (str == null || str.equals("") || str.trim().equals("null")) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 判断对象是否为空
     */
    public static boolean isNotNull(Object str) {
        if (str != null && !str.equals("") && !str.equals("null")&&!str.equals("[]")&&!str.toString().trim().equals("") && !str.toString().trim().equals("[]")) {
            return true;
        } else {
            return false;
        }
    }

}